package com.company.demo03TCP;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;

public class ServerThread extends Thread{
    private Socket socket; // 用于接收主线程提交过来的客户端 socket对象
    public ServerThread(Socket socket) {
        this.socket = socket;
    }
    @Override
    public void run() {
        // 线程的任务逻辑代码：负责接收客户端的数据
        try {
            // 3. 获取字节输入流对象，用于接收客户端发送的数据
            InputStream is = socket.getInputStream();
            // 4. 使用数据流包装低级的字节输入流对象，提升性能
            DataInputStream dis = new DataInputStream(is);
            // 5. 采用与客户端对应的方法读取数据并打印
            System.out.println("来自客户端IP为：" + socket.getInetAddress().getHostAddress() + "，端口号为：" + socket.getPort() + "的连接");
            while (true) {
                try {
                    System.out.println("接收到的数据为：" + dis.readUTF());
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("客户端断开连接！");
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
